from openpyxl import Workbook,load_workbook
# 该方法主要用于创建一个新的
wb = Workbook()
# 该方法主要用于导入一个已经存在的工作薄
wb = load_workbook('./1.xlsx')
# 读入工作簿内所有内容
sheet = wb.active

# data1存储数据格式[商品名：总销售额]
data1 = {
}
# data2存储数据格式[商品名：总销售量]
data2 = {
}
# 总销售额
_sum = 0
# 总销售量
_num = 0

# 逐行读取表单内容
for row in sheet.rows:

    # 过滤第一行
    if(row[2].value == '价格/件'):
        continue

    # 初始化字典，对于不存在key新建并赋初值0，为后续累加操作提供可用对象
    data1.setdefault(row[1].value, 0)
    data2.setdefault(row[1].value, 0)
    # 累加计算本日销售额
    sum = row[2].value * row[4].value
    # 累加计算总销售量
    _num += row[4].value
    # 分别对销售额和销售量结果分类存储
    data1[row[1].value] += sum
    data2[row[1].value] += row[4].value

# 对于销售额四舍五入
'''浮点数与整形相计算时，会出现计算结果微小偏差，
导致出现.9999998或是.000001等异常计算结果出现，
'''
for data in data1:
    if (data1[data]%0.1 > 0.05):
        data1[data] = round(data1[data]+0.1, 1)
    else:
        data1[data] = round(data1[data], 1)
    # 处理后数据累加至总销售额
    _sum += data1[data]

print(data1, "\n总销售额：%.1f"%_sum)
print(data2, "\n总销售量：%d"%_num)

print("\t\t销售额占比\t销售量占比")
for data in data1:
    print(data+":\t%.2f" % (data1[data]/_sum*100)+r"%"+"\t\t%.2f" % (data2[data]/_num*100)+r"%")
